package com.jsbs.iam.auth.mapper;

import com.jsbs.iam.auth.dto.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @BelongsProject: iam
 * @BelongsPackage: com.jsbs.iam.auth.mapper
 * @Author: WangJiYuan
 * @Description: TODO
 * @Version: 2023-01-13  16:36
 */
@Mapper
@Repository
public interface UserUseMapper {
    /**
     * 逻辑删除组织类型和角色,用户组的关联关系
     * @param deleteDto
     */
    void deleteOrgTypeRelation(@Param("deleteDto") OrgTypeRelationDeleteDto deleteDto);

    /**
     * 清除用户与角色之间的关系
     * @param deleteDto
     */
    void deleteUserRoleRelation(@Param("deleteDto") UserInfoDeleteDto deleteDto);

    /**
     * 清除用户与用户组之间的关系
     * @param deleteDto
     */
    void deleteUserGroupRelation(@Param("deleteDto")UserInfoDeleteDto deleteDto);

    /**
     * 删除角色与应用的关联关系
     * @param deleteDto
     */
    void deleteRoleApply(@Param("deleteDto")ApplyConfigDeleteDto deleteDto);

    /**
     * 删除角色与菜单的关联关系
     * @param deleteDto
     */
    void deleteRoleMenuApply(@Param("deleteDto")ApplyConfigDeleteDto deleteDto);

    /**
     * 删除角色与按钮的关联关系
     * @param deleteDto
     */
    void deleteRoleButtonApply(@Param("deleteDto")ApplyConfigDeleteDto deleteDto);

    /**
     * 删除用户组与菜单的关联关系
     * @param deleteDto
     */
    void deleteUserGroupMenuApply(@Param("deleteDto")ApplyConfigDeleteDto deleteDto);

    /**
     * 删除用户组与按钮的关联关系
     * @param deleteDto
     */
    void deleteUserGroupButtonApply(@Param("deleteDto")ApplyConfigDeleteDto deleteDto);

    /**
     * 删除角色与菜单的关联关系
     * @param deleteDto
     */
    void deleteRoleMenu(@Param("deleteDto")MenuManagerDeleteDto deleteDto);

    /**
     * 删除角色与按钮的关联关系
     * @param deleteDto
     */
    void deleteRoleButton(@Param("deleteDto")MenuManagerDeleteDto deleteDto);

    /**
     * 删除用户组与菜单的关联关系
     * @param deleteDto
     */
    void deleteUserGroupMenu(@Param("deleteDto")MenuManagerDeleteDto deleteDto);

    /**
     * 删除用户组与按钮的关联关系
     * @param deleteDto
     */
    void deleteUserGroupButton(@Param("deleteDto")MenuManagerDeleteDto deleteDto);

    /**
     * 查询应用绑定角色下的用户
     * @param applyConfigGetDto
     * @return
     */
    List<String> getUserDataByRoleApply(@Param("applyConfigGetDto")ApplyConfigGetDto applyConfigGetDto);

    /**
     * 查询应用绑定用户组的用户
     * @param applyConfigGetDto
     * @return
     */
    List<String> getUserDataByUserGroupApply(@Param("applyConfigGetDto")ApplyConfigGetDto applyConfigGetDto);
}
